SQL dotaz - prvni vetsi
Otázka od: Daniel Dedek
8. 1. 2004 15:46
prosim pomozte kdo umite v SQL
Mam ta tabulku se sloupci, jeden z nich je Datum.
Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
diky moc za pripadnou pomoc,
Dan Dedek
Odpovedá: Jan Fiala
8. 1. 2004 17:39
8.1.2004 Daniel Dedek:
> Mam ta tabulku se sloupci, jeden z nich je Datum.
> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
> Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
select Top 1 * from tabulka where datum > hodnota
--
Jan Fiala
mailto:jan.fiala@wo.cz
Odpovedá: Burkovsky Ladislav
8. 1. 2004 17:27
vytriedit, sortnut a
podla databazovy existuje nieco ako top, first a pod. na vratenie prveho
zaznamu
laco
Mam ta tabulku se sloupci, jeden z nich je Datum.
Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka
hodnota.
Dan Dedek
Odpovedá: Daniel Dedek
8. 1. 2004 17:36
>> Mam ta tabulku se sloupci, jeden z nich je Datum.
>> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez
>nejaka hodnota.
>
>Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
>select Top 1 * from tabulka where datum > hodnota
>Jan Fiala
aha, je to mySQL. Prochazim manual a "top" nemuzu najit.
Taky jsem zkousel konstrukci
SELECT * FROM tabulka WHERE datum = (SELECT MIN(datum) FROM tabulka WHERE
datum > hodnota)
ale nebere mi to syntaxi
Dan Dedek
Odpovedá: Vlastimil Zdenek
8. 1. 2004 17:36
> 8.1.2004 Daniel Dedek:
>
> > Mam ta tabulku se sloupci, jeden z nich je Datum.
> > Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka
hodnota.
>
> > Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a
pak
> > bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
>
> Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
> select Top 1 * from tabulka where datum > hodnota
>
>
> --
....dovolil bych si doplnit na toto:
select Top 1 * from tabulka where datum > hodnota
ORDER BY Datum
Odpovedá: Petr Daricek
8. 1. 2004 17:16
Melo by to jit nejak takhle, ale nepamatuji si presny format Order by a Limit.
Select * From tabulka Where Date>hodnota Order by date Limit (0,1);
Proste to setridis podle datumu a pak vyberes jenom prvni prvek, ktery vyhovuje
podmince.
Petr Daricek
================= Puvodni zprava =================
Od (From): "Daniel Dedek" <admin2.ok.prague@embassy.mzv.cz>
Komu (To): delphi-l@clexpert.cz
Kopie (Cc):
Predmet (Subject): SQL dotaz - prvni vetsi
Datum (Date): 8. 1. 2004 15:45
==================================================
>
> prosim pomozte kdo umite v SQL
>
> Mam ta tabulku se sloupci, jeden z nich je Datum.
> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
>
> Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
>
> diky moc za pripadnou pomoc,
>
> Dan Dedek
>
>
>
____________________________________________________________
Licitovat nejvyhodnejsi nabidku je postavene na hlavu! Skoda Octavia nyni se
zvyhodnenim az 90.000 Kc!
http://ad2.seznam.cz/redir.cgi?instance=68740%26url=http://www.skoda-
auto.cz/action/fast
Odpovedá: Vlastimil Bardon
8. 1. 2004 18:11
Obavam se, ze takto to nebude fungovat spravne - on chtel nejblizsi vyssi takze
nejblizsi vyssi datum je:
select min(datum) from tabulka where datum > hodnota
cely zaznam bud
select top 1 *
from tabulka
where datum > hodnota
order by datum
.... nebo, pokud je datum jednoznacne tak
select *
from tabulka
where datum = ( select min(datum) from tabulka where datum > hodnota )
nebo ja bych radeji pouzil
declare @datum datetime
select @datum = min(datum) from tabulka where datum > hodnota
select *
from tabulka
where datum = @datum
.... pokud ale datum neni jednoznacne, tak je to de fakto neresitelne, protoze
neexistuje jen jeden jediny datum nejblizsi vyssi danemu datumu, takze
algoritmus 1 sice bude opticky fungovat, ale ve skutecnosti neda presne ten
vysledek, ktery kolega chtel. Proto bych dal prednost algoritmum 2 a 3, ktere
mu v pripade nejednoznacnosti vrati VSECHNY radky, ktere vyhovuji podmince.
-----Original Message-----
From: Jan Fiala [mailto:jan.fiala@wo.cz]
Sent: Thursday, January 08, 2004 3:52 PM
> Mam ta tabulku se sloupci, jeden z nich je Datum.
> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
> Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
select Top 1 * from tabulka where datum > hodnota
Odpovedá: Jakub Dusek
8. 1. 2004 17:19
Taky cesta (aspon na Oraclu by tohle chodilo), ale jestli se ti v
tomhle nepletou ty tabulky, respektive jejich pole. Druhou bych
prejmenoval a pouzival nazvy tabulek pred nazvy poli:
SELECT * FROM tabulka
WHERE tabulka.datum =
(SELECT MIN(tabulka2.datum) FROM tabulka tabulka2
WHERE tabulka2.datum > hodnota)
Jakub Dusek
----------------------------------------------------------------------
web: http://www.corexpert.com, mobile: +420 604 615 795, ICQ: 86063232
odesilani smsek, vizitek, log a melodii, snadna integrace do Vaseho IS
=> Sms GateKeeper, Sms GateKeeper Service
======================================================================
Thursday, January 8, 2004, 4:15:32 PM, you wrote:
DD> Taky jsem zkousel konstrukci
DD> SELECT * FROM tabulka WHERE datum = (SELECT MIN(datum) FROM
DD> tabulka WHERE datum > hodnota)
DD> ale nebere mi to syntaxi
Odpovedá: Mirek Mrakota
8. 1. 2004 18:14
Ahoj,
vzdyt sis skoro odpovedel sam :
Select TOP 1 * from tabulka where datum > porovnavacidatum
to plati pro MSSQL, pro MySQL by to bylo:
SELECT * form tabulka where datum > porovnavacidatum LIMIT 1
Mirek...
----- Original Message -----
From: "Daniel Dedek" <admin2.ok.prague@embassy.mzv.cz>
To: <delphi-l@clexpert.cz>
Sent: Thursday, January 08, 2004 9:45 AM
Subject: SQL dotaz - prvni vetsi
>
> prosim pomozte kdo umite v SQL
>
> Mam ta tabulku se sloupci, jeden z nich je Datum.
> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
>
> Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
>
> diky moc za pripadnou pomoc,
>
> Dan Dedek
>
>
>
>
>
> __________ Informace od NOD32 1.594 (20040107) __________
>
> Tato zprava byla proverena antivirovym systemem NOD32.
> http://www.nod32.cz
>
>
Odpovedá: Slavomir Skopalik
8. 1. 2004 18:18
Myslim, ze tam chybi ORDER.
Jinak na Firebirdu/Interbase pouzivam tohle:
SELECT FIRST 1 ... FROM ... WHERE tdate <:from ...
ORDER BY tDate
Bez toho ORDER BY to opravdu nefunguje (na FB a IB).
Slavek
> Ahoj,
>
> vzdyt sis skoro odpovedel sam :
>
> Select TOP 1 * from tabulka where datum > porovnavacidatum
>
> to plati pro MSSQL, pro MySQL by to bylo:
>
> SELECT * form tabulka where datum > porovnavacidatum LIMIT 1
>
> Mirek...
>
> ----- Original Message -----
> From: "Daniel Dedek" <admin2.ok.prague@embassy.mzv.cz>
> To: <delphi-l@clexpert.cz>
> Sent: Thursday, January 08, 2004 9:45 AM
> Subject: SQL dotaz - prvni vetsi
>
>
> >
> > prosim pomozte kdo umite v SQL
> >
> > Mam ta tabulku se sloupci, jeden z nich je Datum.
> > Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
> >
> > Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> > bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
> >
> > diky moc za pripadnou pomoc,
> >
> > Dan Dedek
> >
> >
> >
> >
> >
> > __________ Informace od NOD32 1.594 (20040107) __________
> >
> > Tato zprava byla proverena antivirovym systemem NOD32.
> > http://www.nod32.cz
> >
> >
>
>
>
Odpovedá: Mirek Mrakota
8. 1. 2004 18:31
MySQL nepodporuje vnorene selecty, takze musis pouzit:
SELECT * FROM tabulka WHERE datum > porovnavacidatum ORDER BY datum LIMIT 1
> >> Mam ta tabulku se sloupci, jeden z nich je Datum.
> >> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez
> >nejaka hodnota.
> >
> >Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
> >select Top 1 * from tabulka where datum > hodnota
> >Jan Fiala
>
> aha, je to mySQL. Prochazim manual a "top" nemuzu najit.
>
> Taky jsem zkousel konstrukci
>
> SELECT * FROM tabulka WHERE datum = (SELECT MIN(datum) FROM tabulka WHERE
> datum > hodnota)
>
> ale nebere mi to syntaxi
>
> Dan Dedek
>
>
>
>
>
>
> __________ Informace od NOD32 1.594 (20040107) __________
>
> Tato zprava byla proverena antivirovym systemem NOD32.
> http://www.nod32.cz
>
>